package com.rm.zeyou.service;

import com.github.pagehelper.PageInfo;
import com.rm.zeyou.entity.Technician;
import com.rm.zeyou.entity.TechnicianItemOrder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rm.zeyou.response.ApiRestResponse;
import com.rm.zeyou.vo.request.*;
import com.rm.zeyou.vo.response.SelectTechnicianOrderDetailsResponseVo;
import com.rm.zeyou.vo.response.SelectTechnicianOrderListResponseVo;
import com.rm.zeyou.vo.response.ServiceEndVo;
import com.rm.zeyou.vo.response.TechnicianCancelOrderDetailResponseVo;

import java.math.BigDecimal;

/**
 * <p>
 * 用户订单表 服务类
 * </p>
 *
 * @author YanYang
 * @since 2025-03-12 15:55:09
 */
public interface TechnicianItemOrderService extends IService<TechnicianItemOrder> {

    ApiRestResponse<PageInfo<SelectTechnicianOrderListResponseVo>> selectTechnicianOrderList(Technician technician, SelectTechnicianOrderListVo selectVo);

    ApiRestResponse<SelectTechnicianOrderDetailsResponseVo> selectTechnicianOrderDetails(Technician technician, String orderNo);

    ApiRestResponse<Integer> takeOrder(Technician technician, TakeOrderVo takeOrderVo) throws Exception;

    ApiRestResponse<Integer> leave(Technician technician, LeaveVo leaveVo);

    ApiRestResponse<Integer> arrive(Technician technician, ArriveVo arriveVo);

    ApiRestResponse<Integer> startService(Technician technician, StartServiceVo startServiceVo);

    ApiRestResponse<Integer> serviceEnd(Technician technician, ServiceEndVo serviceEndVo) throws Exception;


    ApiRestResponse<Integer> technicianAppraise(Technician technician, TechnicianAppraiseVo technicianAppraiseVo);

    ApiRestResponse<TechnicianCancelOrderDetailResponseVo> technicianCancelOrderDetail(Technician technician, String orderNo);

    ApiRestResponse<Integer> technicianCancelOrder(Technician technician, TechnicianCancelOrderVo technicianCancelOrderVo) throws Exception;

    void  refundUser(TechnicianItemOrder technicianItemOrder, BigDecimal price) throws Exception;

    ApiRestResponse<String> technicianCallTel(Technician technician, TechnicianCallTelVo requestVo) throws Exception;

    ApiRestResponse<Integer> technicianVoice(Technician technician, TechnicianVoiceVo technicianVoiceVo);
}
